#ifndef MATERIAL_H
#define MATERIAL_H

#include "Vector.h"
class Texture;

class Material
{
public:
    Material();

    void setDiffuse(float r, float g, float b);
    void setSpecular(float r, float g, float b);
    void setShininess(float s);

    Vector3f getDiffuse();
	// Retorna a componente difusa do material multiplicada pela cor da textura, caso haja.
    Vector3f getDiffuse(float u, float v);
    Vector3f getSpecular();
    float getShininess();

    // Métodos opcional. Nem todo material tem textura.
    void setTexture(Texture *texture);

    // Aplica o material no openGL
    void applyGL();

private:
    Texture* m_texture;
    Vector3f Diffuse;
    Vector3f Specular;
    float Shininess;
};

#endif // MATERIAL_H
